<?php

namespace PKPass;
namespace PKValidate;
namespace PHPMailer;

include('./Resources/PKPass.php');
include('./Resources/PKValidate.php');
require('./Resources/Vars.php');
require('./Database/connect.php');

use PKPass;
use PKValidate;
use \PHPMailer as PHPMailer;

$sm        = $_GET['send_mail'];
$send_mail = false;

if (!isset($sm)) {
    $send_mail = false;
} else {
    if ($sm == 1) {
        $send_mail = true;
    } else {
        $send_mail = false;
    }
}


if (!isset($_GET['num_pass'])) {
    echo "
          <!DOCTYPE html>
          <html>
          <head>
          <meta charset=\"UTF-8\">
          <script type=\"text/javascript\">
            alert('Número de passbook no válido.');
            window.history.back(-1);
          </script>
          </head>
          </html>
        ";
} else {

    $query = "select p.num_pass, p.estatus, p.f_pago, p.num_cliente, p.num_evento, c.nombre, c.a_paterno, c.mail,
                    e.nombre as nombre_evento, e.descripcion, e.f_inicio, e.hora_inicio, e.hora_fin, e.direccion, e.latitud, e.longitud
                    from cliente as c, evento as e, passbook_evento as p where p.num_evento = e.num_evento and c.num_cliente = p.num_cliente
                    and p.num_pass = " . $_GET['num_pass'];

    $result = mysqli_query($connection, $query);
    $row    = mysqli_fetch_array($result, MYSQLI_ASSOC) or die("Error: " . mysqli_error($connection));

    $numero_passbook    = $row['num_pass'];
    $nombre_evento      = utf8_encode($row['nombre_evento']);
    $numero_cliente     = $row['num_cliente'];
    $numero_evento      = $row['num_evento'];
    $nombre             = utf8_encode($row['nombre'] . ' ' . $row['a_paterno']);
    $hora_evento        = utf8_encode($row['hora_inicio'] . '-' . $row['hora_fin']);
    $direccion_evento   = utf8_encode($row['direccion']);
    $fecha_compra       = utf8_encode($row['f_pago'] . "T10:30:36+02:00");
    $fecha_evento       = utf8_encode($row['f_inicio'] . "T10:30:36+02:00");
    $descripcion        = utf8_encode($row['descripcion']);
    $estatus_tem        = $row['estatus'];
    $latitud            = $row['latitud'];
    $longitud           = $row['longitud'];
    $string_actividades = "";
    $coordenadas        = "";
    $estatus            = utf8_encode("No utilizado");
    $mail_cliente       = $row['mail'];

    $query_actividades  = "select * from actividades_evento where num_evento = " . $numero_evento;
    $result_actividades = mysqli_query($connection, $query_actividades);

    while ($row_actividades  = mysqli_fetch_array($result_actividades, MYSQLI_ASSOC)) {
        $string_actividades .= $row_actividades['hora_inicio'] . '-' . $row_actividades['hora_fin'] . '\\t' . $row_actividades['nombre']
                . '\\t' . $row_actividades['aula'] . '\\n';
    }

    if ($estatus_tem == 1) {
        $query_fecha = "select max(fecha) as fecha from accesos_evento where num_pass = $numero_passbook";
        $result_fecha = mysqli_query($connection, $query_fecha);
        $row_fecha = mysqli_fetch_array($result_fecha, MYSQLI_ASSOC) or die("Error: " . mysqli_error($connection));

        $estatus = utf8_encode("Utilizado el " . $row_fecha['fecha']);
    }

    if ($latitud != NULL && $longitud != null) {
        $coordenadas = utf8_encode('"locations" : [{"latitude" : ' . $latitud . ', "longitude" : ' . $longitud . '}],');
    }


    //ES IMPORTANTE EL ORDEN DE ESTE REQUIRE
    require('./JSON/eventoJSON.php');

    $validator = new PKValidate();
    $result    = $validator->validate($json);

    if ($result == TRUE) {

        $pass = new PKPass();

        $pass->setCertificate($cert_path . $cert_evento);
        $pass->setCertificatePassword($certificate_password);
        $pass->setWWDRcertPath($cert_path . $cert_pem);
        $pass->setJSON($json);
        $pass->addFile($evento_path . 'background.png');
//            $pass->addFile($evento_path . 'backgroung@2x.png');
        $pass->addFile($evento_path . 'icon.png');
//            $pass->addFile($evento_path . 'icon@2x.png');
        $pass->addFile($evento_path . 'logo.png');
//            $pass->addFile($evento_path . 'logo@2x.png');
        //        $pass->addFile($evento_path . 'thumbnail.png');
        //        $pass->addFile($evento_path . 'thumbnail@2x.png');

        if ($send_mail) {

            $pool_mail     = "hola@thepool.vg";
            $receiver_mail = $mail_cliente;
            $receiver_name = $nombre;
            $html_body     = "<p>Bienvenido a The Pool, este Passbook es tu identificaci&oacute;n para accesar al centro y es personal e intrasferible.</p>
                          <p>Tu passbook viene como un archivo adjunto en este correo electr&oacute;nico.</p>
                          <p>En automático se guardará en la aplicación Passbook para iPhone y PassWallet para Android.</p>
                          <p>Gracias.</p>";

            require_once('./Resources/class.phpmailer.php');

            $mail = new PHPMailer(true);
            $mail->IsSendmail();
            $mail->SetLanguage("es");
            $mail->CharSet = 'UTF-8';

            try {
                $mail->AddReplyTo($pool_mail, 'The Pool Team');
                $mail->AddAddress($receiver_mail, $receiver_name);
                $mail->SetFrom($pool_mail, 'The Pool Team');
                $mail->Subject = 'Passbook';
                $mail->MsgHTML($html_body);
                $mail->AddAttachment($pass->create(false));
                $mail->Send();
            } catch (phpmailerException $e) {
//                echo $e->errorMessage(); //Pretty error messages from PHPMailer
                $pass->clean();
                
                if (isset($_REQUEST['admin'])) {
                    echo "
                    <!DOCTYPE html>
                    <html>
                    <head>
                    <meta charset=\"UTF-8\">
                    <script type=\"text/javascript\">
                      alert('Hubo un error al enviar el passbook por correo electrónico.');
                      window.history.back(-1);
                    </script>
                    </head>
                    </html>
                  ";
                } else {
                    header('Location: http://www.thepool.vg/Pruebas/resumen-de-compras/');
                }
                

            } catch (Exception $e) {
//                echo $e->getMessage(); //Boring error messages from anything else!
                $pass->clean();

                if (isset($_REQUEST['admin'])) {
                    echo "
                    <!DOCTYPE html>
                    <html>
                    <head>
                    <meta charset=\"UTF-8\">
                    <script type=\"text/javascript\">
                      alert('Hubo un error al enviar el passbook por correo electrónico.');
                      window.history.back(-1);
                    </script>
                    </head>
                    </html>
                  ";
                } else {
                    header('Location: http://www.thepool.vg/Pruebas/resumen-de-compras/');
                }
            }


            $pass->clean();

            if (isset($_REQUEST['admin'])) {
                echo "
                    <!DOCTYPE html>
                    <html>
                    <head>
                    <meta charset=\"UTF-8\">
                    <script type=\"text/javascript\">
                      alert('El passbook ha sido enviado al corrreo electrónico del usuario.');
                      window.history.back(-1);
                    </script>
                    </head>
                    </html>
                  ";
            } else {
                header('Location: http://www.thepool.vg/Pruebas/resumen-de-compras/');
            }
        } else {

            if (!$pass->create(true)) {
                echo "
                    <!DOCTYPE html>
                    <html>
                    <head>
                    <meta charset=\"UTF-8\">
                    <script type=\"text/javascript\">
                      alert('Hubo un problema al generar tu passbook. \\nPonte en contacto con el personal de The Pool para que te ayuden a solucionar tu problema lo antes posible.');
                      window.history.back(-1);
                    </script>
                    </head>
                    </html>
                  ";
            }

            exit;
        }
    } else {
        echo "
          <!DOCTYPE html>
          <html>
          <head>
          <meta charset=\"UTF-8\">
          <script type=\"text/javascript\">
            alert('Hubo un problema al generar tu passbook. \\nPonte en contacto con el personal de The Pool para que te ayuden a solucionar tu problema lo antes posible.');
            window.history.back(-1);
          </script>
          </head>
          </html>
        ";
    }
}
?>